<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <script>
        /*
            邓哥心中有二十个女神，他决定用更加高效的办法
            他同时给二十个女神表白，如果有女神同意，就拒绝其他的女神
            并且，当所有的女神回复完成后，他要把所有的回复都记录到日志进行分析
        */

        function biaobai(god) {
            return new Promise((resolve, reject) => {
                console.log(`邓哥向${god}发出了表白短信`);
                setTimeout(() => {
                    if (Math.random() < 0.05) {
                        console.log(god, "同意");
                        resolve(true);
                    } else {
                        console.log(god, "拒绝");
                        resolve(false);
                    }
                }, Math.floor(Math.random() * (3000 - 1000) + 1000));
            })
        }
        const proms = [];  // promise的集合
        let hasAgree = false; //是否有女神同意

        for (let i = 1; i <= 20; i++) {
            const pro = biaobai(`女神${i}`).then(resp => {
                if (resp) {
                    if (hasAgree) {
                        console.log("发错了短信，邓哥很机智的拒绝了")
                    } else {
                        hasAgree = true;
                        console.log("邓哥很开心，终于成功了！");
                    }
                }
                return resp;
            })
            proms.push(pro);
        }

        Promise.all(proms).then(results => {
            console.log("日志记录", results);
        })
    </script>
</body>

</html>